/* eslint-disable prettier/prettier */
import RNFS from 'react-native-fs';

/**
 * 复制应用的 `assets` 文件夹中的内容到目标文件夹
 * @param {string} sourceFolder - 资产文件夹路径（相对路径，如 'hzx'）
 * @param {string} targetFolder - 目标文件夹路径
 * @returns {Promise<void>}
 */
const Copybegin = async (sourceFolder:string, targetFolder:string) => {
  const copyFolder = async (src:string, dest:string) => {
    try {
      // 创建目标文件夹，如果目标文件夹已存在则跳过
      if (!(await RNFS.exists(dest))) {
        await RNFS.mkdir(dest);
      }

      // 获取源文件夹中的文件和文件夹
      const items = await RNFS.readDirAssets(src); // 使用 readDirAssets 来读取 assets 目录
      console.log('源文件夹中的文件:', items);

      // 递归复制文件和文件夹
      await Promise.all(items.map(async item => {
        const targetPath = `${dest}/${item.name}`;
        if (item.isDirectory()) {
          // 如果目标路径已存在目录，则递归进入该目录，否则创建目录并递归复制
          if (!(await RNFS.exists(targetPath))) {
            await RNFS.mkdir(targetPath);
          }
          await copyFolder(item.path, targetPath);
        } else {
          // 如果目标路径下已存在同名文件，则跳过复制
          if (await RNFS.exists(targetPath)) {
            console.log(`文件已存在，跳过复制: ${targetPath}`);
            return;
          }
          // 复制文件
          const fileContent = await RNFS.readFileAssets(item.path, 'base64'); // 读取文件内容，使用 base64 编码
          await RNFS.writeFile(targetPath, fileContent, 'base64'); // 写入目标路径
          console.log(`文件已复制: ${item.path} -> ${targetPath}`);
        }
      }));

      console.log('文件夹成功复制到目标路径');
    } catch (error) {
      console.error('文件夹复制失败', error.message, error.stack);
      throw error; // 重新抛出错误以供调用者处理
    }
  };

  // 开始复制文件夹
  await copyFolder(sourceFolder, targetFolder);
};

export default Copybegin;
